# @Time    :2025/3/25 11:03
tuple1 = (100, 200, 300, [1, 2, 3])
print(tuple1, id(tuple1))
tuple1[3].append(4)
print(tuple1, id(tuple1))

# 5.4.1 创建元组
tuple2 = (1, 2, 4)
tuple3 = (3,)
# 元组中只包含一个元素时，需要在元素后面添加逗号，否则括号会被当作运算符使用。
tuple3 = (3,)
'''也可以通过元组推导式创建元组。'''
tuple_gen = (i * 2 for i in range(9))
t = tuple(tuple_gen)
print(type(t))
print(t)

# 5.4.2 访问元组
tuple2 = (1, 2, 4)
print(tuple2[2])  # 通过下标访问元组
print(tuple2[-2])

print(tuple2[:])  # ----切片访问--全部数据取出

# 5.4.3 元组相加
tuple1 = (100, 200, 300)
tuple2 = ("a", "b", "c")
print(tuple1 + tuple2)
# 5.4.4 元组乘法
tuple1 = (100, 200, 300)
print(tuple1 * 2)

# 5.4.5 检查成员是否为元组中元素
tuple1 = (100, 200, 300, 400, 500)
print(100 in tuple1)
# 5.4.6 获取元组长度
tuple1 = (100, 200, 300, 400, 500)
print(len(tuple1))
# 5.4.7 求元组中元素的最大值、最小值、加和
tuple1 = (100, 200, 300, 400, 500,)
tuple2 = ("b", "a")
print(max(tuple2))
print(min(tuple2))
# print(sum(tuple2)) #不可以是字符串，只能是数值
# 5.4.8 遍历元组

# ----第一种：
tuple1 = (100, 200, 300, 400, 500)
for item in tuple1:
    print(item)
# ----第二种：
for i in range(len(tuple1)):
    print(i, tuple1[i])
# ----第三种：
for i, item in enumerate(tuple1):
    print(i, item)

# 5.4.9 元组的不可变
# 元组的不可变指的是元组所指向的内存中的内容不可变，但可以重新赋值。
tuple1 = (100, 200, 300, 400, 500)
print(tuple1, id(tuple1))
t = tuple1 + (1, 2, 3)
print(t, id(t))
# 如果元组中元素是可变数据类型，其嵌套项可以被修改。
tuple1 = (100, 200, 300, 400, [1,23,45])
tuple1[-1].append(1234)
print(tuple1)
